# PMRP-1
胖喵简易权限模型 (安全模型)


## 权限模型主要设计

+ 用户角色:

  - 管理员 (`m`)

    对系统所有资源具有修改 (写入) 权限.

    根据系统具体的隐私设计, 管理员可能不能读取一些数据 (但是能写入).

    根据系统具体的审计设计, 管理员可能不能删除/修改一些日志记录.

  - 观察者 (`o`)

    对系统所有资源只具有读取权限, 能够获取整个系统的状态.
    观察者不能进行系统管理 (修改), 是只读版的管理员.

    根据系统具体的隐私设计, 观察者可能不能读取一些数据.

  - 普通用户 (`u`)

    只能访问自己的资源.
    不能对别的用户造成严重不良影响.

+ 内置功能:

  - 资源配额

    对用户能够使用的各种系统资源的数量进行限制.

  - 下级用户

    一个用户 (普通用户) 可以创建一个新的用户,
    将自己的资源分配一部分给新用户使用.

    用户对自己的下级用户具有部分管理权限.

+ 操作类型:

  - 只读 (`r`)

  - 修改 (`w`)


## AAA 设计

+ 认证: 基于公钥 (如 openssh)

+ 授权: 代理检查模式 (pmrp-w, json-rpc)

+ 审计: 日志记录系统


## pmrp-w

+ WebAssembly 运行容器: wasmer

+ 规则: WASM 载入固定规则

+ 可以实现各种权限模型/规则, 比如
  类似 SELinux 的 MAC (强制访问控制)

### 使用示例

上级进程:

1. 收到外部操作请求, 完成 认证

2. 发送 原始请求 至 pmrp-w (json-rpc)

3. (pmrp-w 处理)

4. 收到 pmrp-w 发来的:

   + 授权请求: 已通过权限检查并被允许的请求

   + 辅助请求: 用于查询系统数据, 进一步决定授权

   + 审计记录: 应该转发给日志记录系统

5. (可选) 固定规则的二次权限检查

6. 执行相应操作


## 适用于

多用户系统:

+ fmls 胖蚊轻蜘蛛

+ pmeh 胖喵吃多少

+ pmlc-s 胖喵小云集群管理软件


TODO
